// 创建请求工具
//const baseURL = 'http://localhost:8000'
 const baseURL = 'https://babycar.wykji.cn'


// 请求拦截器
const requestInterceptor = (config) => {
  // 获取token
  const token = uni.getStorageSync('token')
  if (token) {
    config.header = {
      ...config.header,
      'Authorization': `${token}`
    }
  }
  return config
}

// 响应拦截器
const responseInterceptor = (response) => {
  const { statusCode, data } = response

  if (statusCode === 200) {
    // 请求成功
    if (data.code === 200) {
      return data
    } else if (data.code === 401) {
      // token失效，清除登录信息并跳转到登录页
      uni.removeStorageSync('token')
      uni.removeStorageSync('userInfo')
      uni.navigateTo({
        url: '/pages/login/index'
      })
      return Promise.reject(new Error('登录已过期'))
    } else {
      // 其他错误
      return Promise.reject(new Error(data.message || '网络异常'))
    }
  } else if (statusCode === 401) {
    // token失效，清除登录信息并跳转到登录页
    uni.removeStorageSync('token')
    uni.removeStorageSync('userInfo')
    uni.navigateTo({
      url: '/pages/login/index'
    })
    return Promise.reject(new Error('登录已过期'))
  } else {
    // 其他错误
    return Promise.reject(new Error('网络错误'))
  }
}

// 创建请求函数
const request = (options) => {
  const { url, method = 'GET', data, header = {} } = options
  
  // 处理请求配置
  const config = requestInterceptor({
    url: baseURL + url,
    method,
    data,
    header: {
      'Content-Type': 'application/json',
      ...header
    }
  })

  // 发起请求
  return new Promise((resolve, reject) => {
    uni.request({
      ...config,
      success: (res) => {
        try {
          const result = responseInterceptor(res)
          resolve(result)
        } catch (error) {
          reject(error)
        }
      },
      fail: (error) => {
        reject(new Error('网络请求失败'))
      }
    })
  })
}

export default request 